#!/bin/bash

cmd_name="mover"

#Definición de funciones -------------------------------------------------------
validate_params()
{
    #Chequeo de cantidad de argumentos
    if [ $# -lt 2 ] || [ $# -gt 3 ] 
    then
       	message="Cantidad de parámetros erronea" 
		if [ "$cmd_name" != "" ]
		then
			gralog.sh "$cmd_name" "-I" "$message"	
		fi		
        exit 1
    fi

    #Chequeo de que el origen sea un archivo simple
    if !( [ -f "$1" ] )
    then
        message="El origen no es un archivo válido"
		if [ "$cmd_name" != "" ]
		then
			gralog.sh "$cmd_name" "-I" "$message"	
		fi		
        exit 1
    fi

    #Chequeo de que destino sea un directorio
    if !( [ -d "$2" ] )
    then
		message="El destino no es un directorio válido"
		if [ "$cmd_name" != "" ]
		then
			gralog.sh "$cmd_name" "-I" "$message"	
		fi		
       
        exit 1
    fi
}

#Obtiene el numero de secuencia que corresponderia a un nuevo archivo en un
#determinado directorio
#param: ruta/archivo
get_secuence_number()
{	
    dir_name=`dirname "$1"`
    file_name=`basename "$1"`
    dup_dir="$dir_name/dup"
    secuence=`ls "$dup_dir" | grep -c "^$file_name.[0-9]*$"`
    if [ $secuence -gt 0 ]
    then
        secuence=`ls -r "$dup_dir" | grep -m1 "^$file_name.[0-9]*$" | sed "s/^$file_name.//"`
    fi
    echo `echo $secuence + 1 | bc`
}



saveResultInLog(){
	from=$1	
	to=$2		
	if [ $? -ne 0 ]
	then
		message="Ha ocurrido un error al intentar mover el archivo"	
		gralog.sh "$cmd_name" "-I" "$message"		
	else
		# Mensaje de log
		message="Movimiento desde $from hacia $to" 
		gralog.sh "$cmd_name" "-I" "$message"		
	fi
}


#Main --------------------------------------------------------------------------

#Validación de parámetros
validate_params "$@"

file_name=`basename "$1"`
dest="$2"

#Verificamos si es Modo Duplicado
if [ -e "$dest/$file_name" ]
then
    if !( [ -e "$dest/dup" ] )
    then
        mkdir "$dest/dup" 2>> /dev/null >> /dev/null
        if [ $? -ne 0 ]
        then

			message="Error al crear el directorio dup"
			if [ "$cmd_name" != "" ]
			then
				gralog.sh "$cmd_name" "-I" "$message"	
			fi	
            
            exit 1
        fi
    fi

    secuence=`get_secuence_number "$dest/$file_name"`
    dest="$dest/dup/$file_name.$secuence"

    echo "$dest"
fi

mv "$1" "$dest" 2>> /dev/null >> /dev/null

if [ "$cmd_name" != "" ]
then
	saveResultInLog $1 $2
fi

